package net.sxnic.workflow.conf;

import java.util.Set;

/**
 * 工作流转工具类
 * 
 * @author 孙宇飞
 * 
 */
public interface WfConfigUtilsInterface {

	/**
	 * 根据流程名和节点名查询“验证”信息定义
	 * 
	 * @param processName
	 *            流程名
	 * @param nodeName
	 *            节点名
	 * @return
	 * @throws Exception
	 */
	String findValidateDef(String processName, String nodeName) throws Exception;

	/**
	 * 根据流程名和节点名查询“承办角色、组、用户”信息定义
	 * 
	 * @param processName
	 *            流程名
	 * @param nodeName
	 *            节点名
	 * @return
	 * @throws Exception
	 */
	String findAssigneeDef(String processName, String nodeName) throws Exception;

	/**
	 * 根据流程名和节点名查询“后续节点”信息定义
	 * 
	 * @param processName
	 *            流程名
	 * @param nodeName
	 *            节点名
	 * @return
	 * @throws Exception
	 */
	Set<String> findNextNodes(String processName, String nodeName) throws Exception;

	/**
	 * 根据流程名查询“首节点”信息
	 * 
	 * @param processName
	 *            流程名
	 * @return
	 * @throws Exception
	 */
	String findStartNodeName(String processName) throws Exception;

	/**
	 * 根据流程名和节点名查询“对应页面”信息定义
	 * 
	 * @param processName
	 *            流程名
	 * @param nodeName
	 *            节点名
	 * @return
	 * @throws Exception
	 */
	String findJSP(String processName, String nodeName) throws Exception;

	/**
	 * 根据流程名和节点名查询“处理器Handler”信息定义
	 * 
	 * @param processName
	 *            流程名
	 * @param nodeName
	 *            节点名
	 * @return
	 * @throws Exception
	 */
	Set<String> findHandlers(String processName, String nodeName, String action) throws Exception;

	/**
	 * 根据流程名和节点名查询“后续节点及办理人”信息
	 * 
	 * @param processName
	 *            流程名
	 * @param nodeName
	 *            节点名
	 * @return
	 * @throws Exception
	 */
	String getNextAssigneeByProcessNode(String processName, String currNodeName) throws Exception;

	/**
	 * 根据流程名和节点名查询“当前节点及办理人”信息
	 * 
	 * @param processName
	 *            流程名
	 * @param nodeName
	 *            节点名
	 * @return
	 * @throws Exception
	 */
	String[] getAssigneeArrayByProcessNode(String processName, String nodeName) throws Exception;

}
